package com.kyrie.lib_sys.config;

import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.router.SaRouter;
import cn.dev33.satoken.stp.StpUtil;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * stToken请求拦截配置类
 *
 * @author heefM
 * @date 2025-08-22
 */
@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {

    /** 白名单路径（按需增删） */
    private static final String[] WHITE_LIST = {
            "/login",                  // 登录接口
            "/user/login",             // 备用登录地址
            "/user/initTestUser",      // 初始化测试用户
            "/user/register",          // 用户注册
            "/error",
            "/swagger-ui/**",
            "/v3/api-docs/**",
            "/webjars/**",
            "/favicon.ico",
            "/*.html",                 // 静态页面
            "/js/**",                  // JavaScript文件
            "/css/**",                 // CSS文件
            "/layui/**"                // Layui框架文件
    };

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new SaInterceptor(handler -> {
                    // 除了白名单，其余全部校验登录
                    SaRouter.match("/**")
                            .notMatch(WHITE_LIST)
                            .check(r -> StpUtil.checkLogin());
                }))
                .addPathPatterns("/**");
    }
}